package cn.csq.linked;

import java.util.ArrayList;
import java.util.List;

/**
 * @author <a href="mailto:csq02198031@alibaba-inc.com">chengshanqing</a>
 * @date 2025/8/21 11:02
 */
public class LinkedListTest2 {



}

class ListNode2<T>{

    private T val;

    private ListNode2<T> pre;

    private ListNode2<T> next;

    public ListNode2(T val) {
        this.val = val;
    }

    public static ListNode2 createLinkedList(Object[] arr) {
        if (arr == null || arr.length == 0) {
            return null;
        }
        ListNode2 head = new ListNode2(arr[0]);
        ListNode2 cur = head;
        for (int i = 0; i <= arr.length - 1; i++) {
            cur.next = new ListNode2(arr[i]);
            cur = cur.next;
        }
        return head;

    }

    public static void main(String[]args){

    }

}
// 一个链表 其实是构建一种链表形态的数据结构，链表的组成除了存储自身节点的值外，还需要两个值来存储跟相邻节点的关联关系；   双向链表就需要有两个指针
// 链表就是按顺序遍历
// 链表的操作  都需要一个指针来路由到节点，找到操作节点。因为双链表有两个引用，找到操作节点可以操作它的前面和后面
// 单链表在尾部新增节点的时候，单链表需要遍历到尾部节点 O(n)